c++ getline和stringstream
全部标签 我是C++新手(具有C#背景),正在尝试学习如何将字符串转换为int。我通过使用stringstream并将其输出到double来让它工作,如下所示:constchar*inputIndex="5+2";doublenumber=0;stringstreamss(inputIndex);ss>>number;//number=5这很好用。我遇到的问题是我正在解析的字符串以数字开头,但可能在数字后有其他非数字字符(例如“5+2”、“9-(3+2)”等)。stringstream在开头解析数字并在遇到非数字时停止,就像我需要的那样。当我想知道有多少字符被解析为数字时,问题就来了。例如,如果
假设stringstream包含Jamesis4,我可以写类似getline(stream,stringjames,'')的东西来获取单个单词,但是有没有办法知道我已经到了行尾吗?奖金问题!案例1:James是4案例2:James四岁如果我正在遍历字符串流中的单词,并且我希望收到一个值为4的intval,但我收到的却是一个字符串,检查它的最佳方法是什么? 最佳答案 您检查返回值以查看它的计算结果是真还是假:if(getline(stream,stringjames,''))//dostuffelse//fail至于“奖金问题”,您也
这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。所以我制作这个程序已经有一段时间了。我在整个互联网上都看过了,但没有找到有效的解决方案。每次我在arr[i].question和arr[i].answer中输入我的输入时,它都说我的问题是错误的,但我没有给出问题的答案。我试过使用cin.ignore()、cin.clear()和cin.sync()。我可能一直在错误的地方使用它们,但我不确定。我可能会感到
为什么这段代码不能编译?#includevoidf(std::stringstream){}intmain(){f(std::stringstream{});}我收到这个错误:error:useofdeletedfunction‘std::basic_stringstream::basic_stringstream(conststd::basic_stringstream&)’f(std::stringstream{});^如果我将std::stringstream替换为另一种不可复制的类型,它就可以正常工作。这不应该使用stringstream的move构造函数吗?
我正在尝试使用g++(GCC)4.8.220131212(RedHat4.8.2-7)编译以下代码:#includeusingnamespacestd;intmain(intargc,char**argv){autox=1;stringstreams1,s2;s1.swap(s2);}我收到以下错误:g++-g-std=c++0x-cmain.cppmain.cpp:Infunction‘intmain(int,char**)’:main.cpp:8:5:error:‘std::stringstream’hasnomembernamed‘swap’s1.swap(s2);^make:*
我想从以下字符串(存储在文件中)的数组中打印控制台中的每个对象:{beforechars[{Object1},{Object2},{Object3}]afterchars}我是这样做的:std::ifstreamis("content.txt");std::getline(is,content,'[');while(std::getline(is,content,'{')){std::getline(is,content,'}');std::cout但是我得到了这个输出:Object1Object2Object3]afterchars}我的理解是,在Object3迭代之后,ifstre
首先感谢所有帮助过我的人,万分感激!我正在尝试将包含空格和特殊字符的字符串完整地存储到MessageToAdd中。我正在使用getline(cin,MessageToAdd);我也尝试过cin>>MessageToAdd;。我太难了!当我输入示例输入Test一切都按预期进行。但是,如果我要使用TestTestTest整个控制台会快速闪烁,直到我按下CtrlC。有人告诉我,我将变量放在顶部的风格已经过时了。请原谅我,因为我还在自学,这只是习惯的力量。解决这个问题后,我会很快改变我的风格:)voidAddMessage(){ifstreammyReadFile;stringstr;stri
我的问题是关于我正在处理的作业。似乎有多种方法可以完成任务。我正在编写的程序将是文本文件的过滤器。作业的目的是获得使用fstream和getline的经验。要求:读取一个文本文件(任何可能的方式,不必一次全部读取)写入一个单独的文本文件(任何可能的方式,可以逐字符追加或写入)假定每个句子都以句号结尾。每个句子的第一个字母必须大写。每个句子中除第一个字母外的所有字母都必须小写。(专有名词也是如此——这是一个微不足道的例子)我有一个我编写的程序的工作草稿,但getline读取我的文本文件的方式不一致。基本上,它会将一行作为字符串读入,这就是我想要的。正如它在第二行中所读的那样;然而,该程序
所以我正在创建一个命令行应用程序,我试图允许带有参数的命令,或者如果参数用引号引起来,它将被视为1个参数。例子:测试“12”“test”将是命令,“12”将是传递的单个参数。使用以下代码片段:while(getline(t,param,'')){if(param.find("\"")!=string::npos){ss+=param;if(glue){glue=false;params.push_back(ss);ss="";}else{glue=true;}}else{params.push_back(param);}}但是std::getline似乎自动删除了导致我的参数从“12”
std::strings;std::stringstreamss;sss现在包含"a"现在,我如何查看该行的剩余字符("b+c")?也就是说,不会导致下一个操作从下一行开始?(我知道这个例子是人为设计的。) 最佳答案 您可以像这样使用istream::seekg()恢复字符串流:ss.seekg(ss.beg);然后你可以再读一遍。这比创建一个新的要好,因为它可以节省内存,而且速度稍快。 关于c++-使用getline后如何查看剩余的stringstream字符?,我们在StackOve